package cn.android.weblog;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.TextView;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import cn.android.weblog.adapter.PassageListAdapter;
import cn.android.weblog.api.PassageAPI;
import cn.android.weblog.domain.Keyword;
import cn.android.weblog.domain.Passage;
import cn.android.weblog.redisdata.CURRENT;
import cn.android.weblog.redisdata.LOGIN;

public class IndexActivity extends AppCompatActivity {

    private Button keyword;
    private TextView title;
    private ImageButton my;
    private ListView lv;

    private PopupMenu pm;
    private List<Passage> passages; //首页文章列表
    private List<Keyword> keywords; //首页关键词
    private PassageAPI passageAPI;
    private PassageListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);

        keyword=(Button)findViewById(R.id.index_keyword);
        title=(TextView)findViewById(R.id.index_title);
        my=(ImageButton)findViewById(R.id.index_my);
        lv=(ListView)findViewById(R.id.index_lv);
        adapter=new PassageListAdapter(getApplicationContext());
        passages=new ArrayList<>();
        passageAPI=new PassageAPI();

        //不写没办法获取到请求
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        // 初始化页面数据
        init();

        // 单击关键词时显示关键词下拉列表
        keyword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pm.show();
            }
        });

        // 跳转到个人中心
        my.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(LOGIN.USER == null){
                    startActivity(new Intent(IndexActivity.this,LoginActivity.class));
                }else{
                    startActivity(new Intent(IndexActivity.this,MyActivity.class));
                }

            }
        });

        // 单击进入文章详情页
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // 将选中的文章信息存入缓存域中
                CURRENT.PASSAGE=(Passage)adapter.getItem(position);
                Intent intent=new Intent(IndexActivity.this,PassageDetailActivity.class);
                startActivity(intent);
            }
        });


    }

    /**
     * 初始化页面
     */
    private void init(){
        Map<String, Object> map = passageAPI.initIndex();
        passages=JSON.parseArray(map.get("passages").toString(),Passage.class);
        keywords=JSON.parseArray(map.get("keywords").toString(),Keyword.class);
        initMenu();
        initPassage();
    }

    /**
     * 初始化文章列表
     */
    private void initPassage(){
        adapter.setData(passages);
        lv.setAdapter(adapter);
    }

    /**
     * 初始化关键词下拉框
     */
    private void initMenu(){
        pm=new PopupMenu(IndexActivity.this,keyword);
        Menu menu=pm.getMenu();
        pm.getMenuInflater().inflate(R.menu.keyword,menu);
        // 添加“所有”分类
        menu.add(0,4719,0,"所有");
        // 将分类全部添加到菜单项中
        for(Keyword k:keywords){
            // 1-组别、2-菜单项id、3-菜单项顺序、4-菜单项内容
            menu.add(0,k.getKeywordId(),0,k.getKeywordName());
        }
        // 添加单击数据项事件
        pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // 当选择某一个分类的时候，更新页面值
                changeTitle(item);
                return true;
            }
        });
    }

    /**
     * 根据关键词ID查询文章列表
     * @param keywordId 关键词ID
     * @return 文章列表
     */
    private List<Passage> listPassgaeByKeyword(Integer keywordId){
        // 调用dao查询
        Map<String, Object> results = passageAPI.listByKeyword(keywordId);
        // 解析json格式结果
        List<Passage> lists = JSON.parseArray(results.get("kPassages").toString(), Passage.class);
        return lists;
    }

    /**
     * 当选择某一个分类时，更新页面
     * @param item
     */
    private void changeTitle(MenuItem item){
        if(item.getItemId() == 4719) {
            // 所有文章
            initPassage();
            title.setText("首页");
        }else{
            // 查询关键词下文章列表
            List<Passage> lists=listPassgaeByKeyword(item.getItemId());
            // 刷新页面 (只有adapter重新new才能成功更新页面)
            adapter=new PassageListAdapter(getApplicationContext());
            adapter.setData(lists);
            lv.setAdapter(adapter);
            // 更新页面标题
            title.setText(item.getTitle());
        }
    }

}
